本篇文章會介紹怎麼使用三層式架構架設我們的後端系統,這篇會偏向文字敘述,會先介紹本次後端的做法,下篇文章才會進到完整程式碼跟測試的部分。
三層式架構(Three-tier Architecture)是一種常見的資料庫應用程式設計模式,它將應用程式分為三個邏輯層次。這種架構提高了應用程式的可維護性、擴展性和靈活性。
負責與用戶直接互動
例如:網頁介面
處理來自表現層的請求,實現業務邏輯和數據處理
執行數據的讀取、寫入、更新和刪除操作
通常包含資料庫連接和查詢邏輯
大致上就像這樣
我個人會以前端常用的 MVP 架構去理解
一般在撰寫後端的三層式架構時會區分為:
Controller,即表現層,也等於 MVP 中的 V,就是使用者會碰到的最外面的那一層,在這裡我們通常會撰寫 API 服務,使用者就是透過 Controller 所寫的 API 來當作路徑訪問資料庫。
Service,即邏輯層,也等於 MVP 中的 P,就是負責執行邏輯判斷的地方,通常 Controller 寫完 API 後,內部要回傳資料時的資料就是透過 Service 進行資料處理、邏輯判斷,最後將整理好的資料丟回給 Controller 顯示,就跟 MVP 中 P 所負責的工作一樣。
Repository,即資料訪問層,也等於 MVP 中的 M,就是負責跟資料庫對接的部分,當 Service 需要某些資料庫的資料時,就會透過 Repository 跟資料庫拿取資料,這部分跟 MVP 中的 P 如果需要資料就會跟 M 拿一樣。
這篇文章會先大概介紹這 7 項各自負責的工作,以及一些會使用到的設計方式
最後完整建立的項目大概項這樣
在建立三層式架構前,我們要先來建立資料表,想做什麼功能可以自由設定,這次教學會做一個註冊帳號,拿到驗證碼,再拿驗證碼驗證帳號的功能。
首先新增一個 class,並且命名,這部分建立的方式也包含了 Controller、Service。
如同上方三層式架構講到的,這裡會負責我們的 API 路徑設定的工作,並且會呼叫 Service 來完成資料判斷,最後回傳資料給使用者看。
這裡會執行資料判斷跟邏輯處理的工作,將資料整理完畢,判斷好要回傳的內容再丟給 Controller 做顯示。
這裡會撰寫一些查詢資料或變更資料的 SQL,當 Service 需要用到資料庫中的資料時,就會透過 Repository 的查詢方法來跟資料庫溝通。
這裡建立時會比較不一樣,我們要選取 interface ,因為 Repository 是一個接口,負責跟資料庫對接而已。
這個部分其實要看 Controller 想要怎麼設計,一般來說要從前端像後端發送資料,就可以根據發送過來的資料做不同的功能,像是註冊功能可能就需要「name、email、password...」,因此根據傳送過來的資料,就可以做到不同功能。
建立 Request 跟 Response 時有分兩種方式,一個是用 Class,另一個就是用 Record,兩者使用上其實差不多,不過 Record 會比較簡潔一點,Record 本身可以做到像 @Builder 在做的工作,直接為項目設值,不用透過 Setter,因此程式碼會相對 Class 比較簡潔。
完成以上大概架構的建立後,接下來就是要將裡面的內容給補上,測試的部分會使用 postman 做測試。